
CREATE PROCEDURE sp_upd_PersonaArea
	@cPerCodigo varchar(10),
	@cPerApellido varchar(120),
	@cPerNombre varchar(120),
	@nPerTipo int,
	@cUbiGeoCodigo nvarchar(40),
	@nPerIdeTipo int,
	@cPerIdeNumero nvarchar(12),
	@cPerDomDireccion nvarchar(255),
	@nUniOrgCodigo int,
	@nPerDirCodigo int = 0

as
begin 
	
	update persona set cPerApellido = @cPerApellido, cPerNombre = @cPerNombre, nPerTipo = @nPerTipo, cUbiGeoCodigo = @cUbiGeoCodigo, dPerDate = getdate()
	where cPerCodigo = @cPerCodigo

	if (select count(*) from Peridentifica where cPerCodigo = @cPerCodigo and nPerIdeTipo = @nPerIdeTipo) = 1 
		begin
			update peridentifica set cPerIdeNumero = @cPerIdeNumero where cPerCodigo = @cPerCodigo and nPerIdeTipo = @nPerIdeTipo
		end
	else
		begin
			delete from PerIdentifica where cPerCodigo = @cPerCodigo and nPerIdeTipo = @nPerIdeTipo
			insert into peridentifica values (@cPerCodigo,@nPerIdeTipo,@cPerIdeNumero)
		end

	if @nPerDirCodigo = 0 
		begin
			select @nPerDirCodigo = isnull(max(nPerDirCodigo),0) + 1 from perdomicilio

			insert into perdomicilio (nPerDirCodigo, cPerCodigo,nPerDomTipo,cPerDomDireccion,nPerDomActual,nPerDomStatus,cUbiGeoCodigo,dEffDate)
			values (@nPerDirCodigo,@cPerCodigo,1,@cPerDomDireccion,1,1,@cUbiGeoCodigo,getdate())
	
		end
	else
		begin
			update PerDomicilio set cPerDomDireccion = @cPerDomDireccion, cUbiGeoCodigo = @cUbiGeoCodigo, dEffDate = getdate()
			where nPerDirCodigo = @nPerDirCodigo and cPerCodigo = @cPerCodigo
		end

	declare @nPrdCodigo int
	select top 1 @nPrdCodigo = nPrdCodigo from periodo where nPrdActividad = 1 and NprdEstado = 1
	
	declare @nOrden int = 0
	select @nOrden = isnull(max(nOrden),0) + 1 from UniOrgPerExt where cPerCodigo = @cPerCodigo

	if (select count(*) from UniOrgPerExt where nUniOrgCodigo = @nUniOrgCodigo and cPerCodigo = @cPerCodigo and dUniOrgPerFechaFin = null and nPrdCodigo = @nPrdCodigo) = 0
		begin
			update UniOrgPerExt set dUniOrgPerFechaFin = getdate() where cPerCodigo = @cPerCodigo and dUniOrgPerFechaFin = null
			insert into UniOrgPerExt values (@nUniOrgCodigo,@cPerCodigo,@nPrdCodigo,@nOrden,getdate(),null,1)
		end 
		
	select cpercodigo from persona where cpercodigo = @cPerCodigo

end